package day0724API;

public class Test3 {
    public static void main(String[] args) {
        //1.不省略
        Dog d1=new Dog() {
            @Override
            public String wang(String color) {
                return color+"狗在叫唤";
            }
        };
        d1.wang("小花狗");
        //2.用lambda表达式写，但不省略{}
        //lambda可以省略new 接口名（）｛｝
        //lambda同时可以省略方法的修饰词和返回值类型,参数保留，方法体保留，参数和方法体之间用->连接
        Dog d2=(String color)->{return color+"狗在叫唤";};
        d2.wang("小黄狗");

        //3.用lambda表达式写，省略{}
        //如果匿名内部类方法中只有一句代码，则可以省略{}，并且要省略分号
        //(如果方法只有一句代码并且是返回值，则可以省略大括号，并且要省略分号，同时不能写return)
        Dog d3=(color)-> color+"狗在叫唤";
        d3.wang("小黑狗");


        //4.用lambda表达式写，省略参数的()
        //如果匿名内部类方法中只有一个参数，则可以省略参数的圆括号(同时不能写参数类型)
        Dog d4=color-> color+"狗在叫唤";
        d4.wang("小黑狗");
    }
}

interface Dog{
    String wang(String  color);
}
